package com.ruoyi.common.im.domain.dto;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

/**
 * @author jzy
 * @date 2022/2/22
 */
@Data
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
public class MessageDto {


    /**
     * 发送用户 Id
     */
    private String fromUserId;

    /**
     * 目标 ID，即为客户端 targetId，根据会话类型 channelType 的不同，可能为二人目标 ID、群聊 Id、聊天室 ID、客服 Id 等。
     */
    private String toUserId;

    /**
     * 消息类型，例如文本消息 RC:TxtMsg、图片消息 RC:ImgMsg。参见内置消息类型。
     */
    private String objectName;

    /**
     * 发送消息内容
     */
    private String content;

    /**
     * 会话类型，二人会话是 PERSON 、讨论组会话是 PERSONS 、群组会话是 GROUP 、聊天室会话是 TEMPGROUP
     */
    private String channelType;

    /**
     * 服务端收到客户端发送消息时的服务器时间（1970年到现在的毫秒数）
     */
    private String msgTimestamp;

    /**
     * 可通过 msgUID 确定消息唯一。
     */
    private String msgUID;

    /**
     * 消息中是否含有敏感信息，0 为不包含，1 为含有屏蔽敏感词，2 为含有替换敏感词。
     * 消息路由功能默认含有屏蔽敏感词的消息不进行路由，可提交工单开通含有敏感词的消息路由功能，
     * 未开通情况下 sensitiveType 值默认为 0 不代表任何意义。
     * 开通后可通过该属性判断文本消息中是否含有敏感词，图片、语言消息审核不通过时标识为
     * 1。目前支持单聊、群聊、聊天室会话类型，其他会话类型默认为 0 ，开通后含有屏蔽敏感词的消息也不会进行下发，只会进行消息路由。
     */
    private Integer sensitiveType;

    /**
     * 	标识消息的发送源头，包括：iOS、Android、Websocket、MiniProgram（小程序）、PC、Server（通过 Server API 发送，需要开通 Server API 发送消息进行消息路由功能）。
     */
    private String source;

    /**
     * 	会话频道 Id，使用融云超级群频道功能时，可通过 buschannel 获取频道 Id，未使用时该内容为空。
     */
    private String busChannel;

    /**
     * 	channelType 为 GROUP 时此参数有效，显示为群组中指定接收消息的用户 ID 数组，该条消息为群组定向消息。非群定向消息时该字段为空，如指定的用户不在群组中内容也为空。
     */
    private String[] groupUserIds;
}
